import { get, post, put, del } from './axios';
import { 
  ApiResponse, 
  PaginationResult, 
  TraceabilityItem, 
  TraceabilityQueryParams,
  TraceabilityCreateParams,
  TraceabilityUpdateParams
} from '../types/api';

/**
 * 溯源管理API服务
 */
export const TraceabilityApi = {
  /**
   * 获取溯源管理列表（分页）
   * @param params 查询参数
   * @returns 溯源管理列表
   */
  getList: (params: TraceabilityQueryParams): Promise<ApiResponse<PaginationResult<TraceabilityItem>>> => {
    return get('/traceability', params);
  },

  /**
   * 获取溯源管理详情
   * @param id 溯源ID
   * @returns 溯源管理详情
   */
  getDetail: (id: number): Promise<ApiResponse<TraceabilityItem>> => {
    return get(`/traceability/${id}`);
  },

  /**
   * 根据溯源码获取详情
   * @param code 溯源码
   * @returns 溯源管理详情
   */
  getByCode: (code: string): Promise<ApiResponse<TraceabilityItem>> => {
    return get(`/traceability/code/${code}`);
  },

  /**
   * 创建溯源管理
   * @param data 创建参数
   * @returns 创建结果
   */
  create: (data: TraceabilityCreateParams): Promise<ApiResponse<TraceabilityItem>> => {
    return post('/traceability', data);
  },

  /**
   * 更新溯源管理
   * @param data 更新参数
   * @returns 更新结果
   */
  update: (data: TraceabilityUpdateParams): Promise<ApiResponse<TraceabilityItem>> => {
    return put(`/traceability/${data.id}`, data);
  },

  /**
   * 删除溯源管理
   * @param id 溯源ID
   * @returns 删除结果
   */
  delete: (id: number): Promise<ApiResponse> => {
    return del(`/traceability/${id}`);
  },

  /**
   * 批量删除溯源管理
   * @param ids ID数组
   * @returns 删除结果
   */
  batchDelete: (ids: number[]): Promise<ApiResponse> => {
    return post('/traceability/batch-delete', { ids });
  }
}; 